import java.util.*;
/*给你一个下标从 0 开始的二维整数数组 nums 。

返回位于 nums 至少一条 对角线 上的最大 质数 。如果任一对角线上均不存在质数，返回 0 。

注意：

如果某个整数大于 1 ，且不存在除 1 和自身之外的正整数因子，则认为该整数是一个质数。
如果存在整数 i ，使得 nums[i][i] = val 或者 nums[i][nums.length - i - 1]= val ，则认为整数 val 位于 nums 的一条对角线上。
输入：nums = [[1,2,3],[5,6,7],[9,10,11]]
输出：11
解释：数字 1、3、6、9 和 11 是所有 "位于至少一条对角线上" 的数字。由于 11 是最大的质数，故返回 11 。

在上图中，一条对角线是 [1,5,9] ，而另一条对角线是 [3,5,7] 。*/
public class Main {
    public static int seek(int[][] nums) {
        int n = nums.length;
        if (n == 0) return 0;
        int res = 0;
        for (int i = 0; i < n; i++) {
            int num = nums[i][i];
            // 主对角线
            if (num > res && isprime(num)) {
                res = num;
            } // 副对角线
            if (i != n - 1 - i) {
                num = nums[i][n - 1 - i];
                if (num > res && isprime(num)) {
                    res = num;
                }
            }
        }
        return res;
    }
    public static boolean isprime(int num) {

        if (num < 2) return false;
        if (num == 2) return true;
        if (num % 2 == 0) return false;
        for (int i = 3; i * i <= num; i += 2) { // 判断奇数是否为因数，i*i缩减范围
            if (num % i == 0) return false;
        }
        return true;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[][] nums = new int[n][n];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                nums[i][j] = sc.nextInt();
            }
        }
        int maxprime = seek(nums);
        System.out.println(maxprime);
    }
}